#ifndef CHOLIDAYSET_H
#define CHOLIDAYSET_H

#include "cworktime.h"

#include <QDateTime>

struct TFullTime
{
    CWorkTime mWorkTime;
    bool mbFlag;//是否为上班时间
};

class CHolidaySet
{
public:
    QHash<int, QVector<CWorkTime> > mHashNormalDayToWorkTime;//key 0-6表示星期一到星期天
    QVector<CWorkTime> mVecTodayWorkTime;//当天的工作时间
    QSet<QDate> mSetHoliday;

    CHolidaySet();
    //两个日期时间期间的实际工作时长
    int DiffSeconds(const QDateTime & rStartDateTime, const QDateTime & rEndDateTime);
    //查询结果rHashDayToWorkTime中不一定rStartDate到rEndDate每天都有，因为有可能是周日
    bool CapDateWorkTime(const QDate& rStartDate, const QDate& rEndDate, QMap<QDate, QVector<CWorkTime> >& rHashDayToWorkTime);
    //当前时间与交期同一天时，剩余时间的计算
    int SameDayLeftSeconds(const QDate rDate, const QTime & rCurTime, const QTime & rFinalTime,
                           const QMap<QDate, QVector<CWorkTime> >& rDateToWorkTime);
    void CapHoliday(const QDate & rStartDate, const QDate & rEndDate);
    //单独计算今天还剩下多少工作时间
    int TodayLeftSeconds(const QDate rDate, const QTime & rCurTime,
                         const QMap<QDate, QVector<CWorkTime> >& rDateToWorkTime);
    //单独计算交期那天剩下多少工作时间
    int FinalLeftSeconds(const QDate rDate, const QTime & rFinalTime,
                         const  QMap<QDate, QVector<CWorkTime> >& rDateToWorkTime);
    int OneDayLeftSeconds(const QVector<CWorkTime> & rVecWorkTime, const QTime & rStartTime, const QTime & rEndTime);
};

#endif // CHOLIDAYSET_H
